package com.walming.generator.copycat.mybatisplus.config;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.walming.generator.copycat.mybatisplus.injector.PhysicalDeleteEnhance;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * mybatis-plus 配置类
 *
 * @author walming
 * @date 2021-03-03 16:07
 */
@Configuration
public class MybatisPlusConfig {

    /**
     * SQL 自动注入器接口
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new PhysicalDeleteEnhance();
    }

    /**
     * PageHelper
     */
    /*
    @Bean
    public PageInterceptor pageInterceptor() {
        Properties properties = new Properties();
        // 指定分页插件使用哪种方言（分页插件会自动检测当前的数据库链接，自动选择合适的分页方式）
        properties.setProperty("helperDialect", DbType.MYSQL.getDb());
        // 分页参数合理化，默认false禁用，启用合理化时，如果pageNum<1会查询第一页，如果pageNum>pages会查询最后一页
        properties.setProperty("reasonable", "true");
        // 默认值为 false ，当该参数设置为 true 时，如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果
        // 相当于没有执行分页查询，但是返回结果仍然是 Page 类型
        properties.setProperty("pageSizeZero", "true");
        // 支持通过 Mapper 接口参数来传递分页参数，默认值 false
        // 分页插件会从查询方法的参数值中，自动根据上面 params 配置的字段中取值，查找到合适的值时就会自动分页
        properties.setProperty("supportMethodsArguments", "true");
        // 配置参数映射，用于从对象中根据属性名取值
        properties.setProperty("params", "count=countSql");
        PageInterceptor pageInterceptor = new PageInterceptor();
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }
    */

    /**
     * mybatis-plus 分页插件
     */
    /*
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
        // 数据库类型(根据类型获取应使用的分页方言), 建议单一数据库类型的均设置 dbType
        paginationInterceptor.setDbType(DbType.MYSQL);
        // 设置请求的页面大于最大页后操作，true调回到首页，false继续请求，默认false
        paginationInterceptor.setOverflow(true);
        // 设置最大单页限制数量，默认 500 条，-1 不受限制
        paginationInterceptor.setMaxLimit(500L);
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(paginationInterceptor);
        return interceptor;
    }
    */

}
